home *** CD-ROM | disk | FTP | other *** search
- // Author: Wesley Curtis Lefebvre
-
- #include "Global.h"
-
- void checkParameterIndices(int *row,int *col)
- {
- if (*row > DLL_PARAM_ROWS-1)
- *row = DLL_PARAM_ROWS-1;
- if (*col > DLL_PARAM_COLS-1)
- *col = DLL_PARAM_COLS-1;
- if (*row < 0)
- *row = 0;
- if (*col < 0)
- *col = 0;
- }
-
- DLLData *allocDLLInstance(DLLData *oldInstance)
- {
- DLLData *data = (DLLData*)malloc(sizeof(DLLData));
- data->weights = NULL;
- data->parameters = NULL;
- data->userData = NULL;
- if (oldInstance) {
- if (oldInstance->weights) {
- data->weights = oldInstance->weights;
- oldInstance->weights = NULL;
- }
- if (oldInstance->parameters) {
- data->parameters = oldInstance->parameters;
- oldInstance->parameters = NULL;
- }
- }
- return data;
- }
-
- void freeDLLInstance(DLLData *instance)
- {
- if (instance) {
- if (instance->weights)
- free(instance->weights);
- if (instance->parameters)
- free(instance->parameters);
- free(instance);
- }
- }
-
- DLLData *setWeights(DLLData *instance, int numberOfWeights)
- {
- if (!instance->weights)
- instance->weights = (DLLWeights*)malloc(sizeof(DLLWeights));
- instance->weights->length = numberOfWeights;
- return instance;
- }
-
- DLLData *allocParameters(DLLData *instance)
- {
- int i,j;
-
- if (!instance->parameters) {
- DLLParameters *parameters = (DLLParameters*)malloc(sizeof(DLLParameters));
- for (i=0; i<DLL_PARAM_ROWS; i++)
- for (j=0; j<DLL_PARAM_COLS; j++) {
- strcpy(parameters->parameters[i][j], "");
- strcpy(parameters->parameterNames[i][j], "");
- }
- instance->parameters = parameters;
- }
- return instance;
- }
-
- NSFloat *getWeights(DLLData *instance)
- {
- return instance->weights->data;
- }
-
- void setUserData(DLLData *instance, void *userData)
- {
- instance->userData = userData;
- }
-
- void *getUserData(DLLData *instance)
- {
- return instance? instance->userData: NULL;
- }
-
- void setParameterName(DLLData *instance, int row, int col, char *name, BOOL realloc)
- {
- allocParameters(instance);
- checkParameterIndices(&row,&col);
- strcpy(instance->parameters->parameterNames[row][col], name);
- instance->parameters->parameterReallocs[row][col] = realloc;
- }
-
- int getIntParameter(DLLData *instance, int row, int col)
- {
- int intValue=0;
- checkParameterIndices(&row,&col);
- if (sscanf(instance->parameters->parameters[row][col], "%d", &intValue) == EOF)
- return 0;
- return intValue;
- }
-
- NSFloat getFloatParameter(DLLData *instance, int row, int col)
- {
- float floatValue=0.0f;
- checkParameterIndices(&row,&col);
- if (sscanf(instance->parameters->parameters[row][col], "%f", &floatValue) == EOF)
- return 0.0f;
- return floatValue;
- }
-
- char *getStringParameter(DLLData *instance, int row, int col)
- {
- checkParameterIndices(&row,&col);
- return instance->parameters->parameters[row][col];
- }
-
- BOOL getBoolParameter(DLLData *instance, int row, int col)
- {
- checkParameterIndices(&row,&col);
- char tempString[128];
- strcpy(tempString,instance->parameters->parameters[row][col]);
- return ((tolower(tempString[0]) == 't') && (tolower(tempString[1]) == 'r') && (tolower(tempString[2]) == 'u') && (tolower(tempString[3]) == 'e') && (tolower(tempString[4]) == '\0'));
- }
-
- void setIntParameter(DLLData *instance, int row, int col, int intValue, BOOL force)
- {
- allocParameters(instance);
- checkParameterIndices(&row,&col);
- if (force || !strcmp(instance->parameters->parameters[row][col],""))
- sprintf(instance->parameters->parameters[row][col], "%d", intValue);
- }
-
- void setFloatParameter(DLLData *instance, int row, int col, NSFloat floatValue, BOOL force)
- {
- allocParameters(instance);
- checkParameterIndices(&row,&col);
- if (force || !strcmp(instance->parameters->parameters[row][col],""))
- sprintf(instance->parameters->parameters[row][col], "%f", floatValue);
- }
-
- void setStringParameter(DLLData *instance, int row, int col, char *stringValue, BOOL force)
- {
- allocParameters(instance);
- checkParameterIndices(&row,&col);
- if (force || !strcmp(instance->parameters->parameters[row][col],""))
- sprintf(instance->parameters->parameters[row][col], "%s", stringValue);
- }
-
- void setBoolParameter(DLLData *instance, int row, int col, BOOL boolValue, BOOL force)
- {
- allocParameters(instance);
- checkParameterIndices(&row,&col);
- if (force || !strcmp(instance->parameters->parameters[row][col],""))
- sprintf(instance->parameters->parameters[row][col], "%s", boolValue? "TRUE": "FALSE");
- }
-